home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tools / packer / pack / xpkdisk / xpkdisk.h < prev    next >
C/C++ Source or Header  |  1995-03-09  |  4KB  |  179 lines

  1. /*-
  2.  * XPKDISK.H
  3.  *
  4.  * $Id: xpkdisk.h,v 1.3 1993/11/08 13:11:15 Rhialto Rel $
  5.  * $Log: xpkdisk.h,v $
  6.  * Revision 1.3  1993/11/08  13:11:15  Rhialto
  7.  * Add RCS tags.
  8.  *
  9.  *
  10.  * This code is (C) Copyright 1989-1993 by Olaf Seibert. All rights reserved.
  11.  * May not be used or copied without a licence.
  12. -*/
  13.  
  14. #ifndef EXEC_MEMORY_H
  15. #include <exec/memory.h>
  16. #endif
  17. #ifndef EXEC_DEVICES_H
  18. #include <exec/devices.h>
  19. #endif
  20. #ifndef EXEC_ERRORS_H
  21. #include "exec/errors.h"
  22. #endif
  23. #ifndef EXEC_SEMAPHORES_H
  24. #include "exec/semaphores.h"
  25. #endif
  26. #ifndef DEVICES_TRACKDISK_H
  27. #include <devices/trackdisk.h>
  28. #endif
  29. #ifndef LIBRARIES_DOSEXTENS_H
  30. #include <libraries/dosextens.h>
  31. #endif
  32. #ifndef CLIB_EXEC_PROTOS_H
  33. #include <clib/exec_protos.h>
  34. #endif
  35. #ifndef CLIB_ALIB_PROTOS_H
  36. #include <clib/alib_protos.h>
  37. #endif
  38. #ifndef CLIB_DOS_PROTOS_H
  39. #include <clib/dos_protos.h>
  40. #endif
  41.  
  42. extern struct ExecBase *SysBase;
  43.  
  44. #define XD_NUMUNITS    8
  45. #define XD_BPS        512
  46. #define XD_SPT        64
  47. #define XD_TRACKLEN    (XD_BPS * XD_SPT)
  48.  
  49. #define VERSION     SYS2_04
  50. #define REVISION    5
  51.  
  52. typedef unsigned char    byte;
  53. typedef unsigned short    ushort;
  54. typedef unsigned long    ulong;
  55.  
  56. struct XpkDiskDevice {
  57.     struct Device   xd_Dev;
  58.     long        xd_Seglist;
  59.     struct XpkDiskUnit *xd_Unit[XD_NUMUNITS];
  60. };
  61.  
  62. #define dev_Node    xd_Dev.dd_Library.lib_Node
  63. #define dev_Flags    xd_Dev.dd_Library.lib_Flags
  64. #define dev_NegSize    xd_Dev.dd_Library.lib_NegSize
  65. #define dev_PosSize    xd_Dev.dd_Library.lib_PosSize
  66. #define dev_Version    xd_Dev.dd_Library.lib_Version
  67. #define dev_Revision    xd_Dev.dd_Library.lib_Revision
  68. #define dev_IdString    xd_Dev.dd_Library.lib_IdString
  69. #define dev_OpenCnt    xd_Dev.dd_Library.lib_OpenCnt
  70.  
  71. struct Cache {
  72.     struct MinList  LRUList;
  73. };
  74.  
  75. struct XpkDiskUnit {
  76.     struct MsgPort  xu_Port;
  77.  
  78.     /* User configurable parameters first */
  79.     short        xu_MaxCache;
  80.     ushort        xu_CacheFlags;
  81.     short        xu_CacheTimeout;
  82.     char        xu_XPKPackMethod[10];   /* "XXXX.100" */
  83.  
  84.     short        xu_OpenCnt;
  85.     short        xu_UnitNr;
  86.     ushort        xu_Flags;
  87.     struct Cache    xu_Cache;
  88.     short        xu_CurrentCache;
  89.     ushort        xu_CacheDirty;
  90.     short        xu_TimeoutCounter;
  91.     int         xu_NumTracks;    /* a guess */
  92.     int         xu_TrackLen;
  93.     struct MinList  xu_ChangeIntList;
  94.     struct MsgPort  xu_TimerPort;
  95.     struct timerequest xu_TimeReq;
  96.     int         xu_RipcordBlocks;
  97.     char        xu_WriteErr;    /* was there a write problem? */
  98.     char        xu_ReadOnly;
  99. };
  100.  
  101. #define     TDERR_NoError   0
  102.  
  103. #define UNITB_ACTIVE    0
  104. #define UNITF_STOPPED    (1<<2)
  105. #define UNITF_WAKETASK    (1<<3)
  106.  
  107. #define CACHE_TIMEOUT        5
  108. #define MAX_CACHE        8
  109. #define PACKING_METHOD        "BLZW.100"
  110.  
  111. #define CACHEF_CMDUPDATE    0x0001
  112. #define CACHEF_DELAY        0x0002
  113. #define CACHEF_SAFEWRITE    0x0004
  114.  
  115. #define CACHEF_GOTCMDUPD    0x0100
  116. #define CACHEF_GOTTIMEOUT   0x0200
  117. #define CACHEF_LICENSED     0x8000
  118.  
  119. #define CACHE_FLAGS        (CACHEF_CMDUPDATE | CACHEF_DELAY | CACHEF_SAFEWRITE)
  120.  
  121. #define XPKDISKDIR        "XPKD:"
  122.  
  123. /* Names of configuration parameters, as seen by the user */
  124. #define CONFIGFILE        "ENV:XpkDisk%x.prefs"
  125. #define CONFIGFILE_ARC        XPKDISKDIR "XpkDisk%x.prefs"
  126.  
  127. #define S_CMDUPDATE        "CMDUPDATE"
  128. #define S_DELAY         "DELAY"
  129. #define S_SAFEWRITE        "SAFE"
  130. #define S_LICENSED        "LICENSED"
  131. #define S_MaxCache        "CACHE"
  132. #define S_CacheTimeout        "TIME"
  133. #define S_XPKPackMethod     "METHOD"
  134.  
  135.  
  136. #define SYS1_2        33    /* System version 1.2 */
  137. #define SYS1_3        34    /* System version 1.3 */
  138. #define SYS2_0        36    /* System version 2.0 */
  139. #define SYS2_04     37    /* System version 2.04 */
  140.  
  141. typedef struct XpkDiskDevice DEV;
  142. typedef struct XpkDiskUnit   UNIT;
  143.  
  144.  
  145. #define TASKPRI     0L
  146. #define TASKSTACK   2048L
  147.  
  148. #define STRIP(cmd)  ((unsigned char)cmd)
  149. #define IMMEDIATE   ((1<<CMD_INVALID)|\
  150.              (1<<CMD_STOP)|(1<<CMD_START)|(1<<CMD_FLUSH)|\
  151.              (1L<<TD_ADDCHANGEINT)|\
  152.              (1L<<TD_REMOVE)|(1L<<TD_RAWREAD)|(1L<<TD_RAWWRITE)|\
  153.              (1L<<TD_GETDRIVETYPE)|(1L<<TD_EJECT)|\
  154.              (1L<<TD_SEEK)|(1L<<TD_CHANGENUM)|(1L<<TD_CHANGESTATE)|\
  155.              (1L<<TD_PROTSTATUS))
  156. #define PerformIO(ioreq, unit) \
  157.             (funcTable[STRIP(ioreq->io_Command)])(ioreq, unit)
  158.  
  159. #define TD_Remove    CMD_Invalid
  160. #define TD_Rawread    CMD_Invalid
  161. #define TD_Rawwrite    CMD_Invalid
  162. #define TD_Getdrivetype CMD_Invalid
  163. #define TD_Eject    CMD_Invalid
  164.  
  165. #define TD_Seek     TD_Return0
  166. #define TD_Changenum    TD_Return0
  167. #define TD_Changestate    TD_Return0
  168.  
  169. #define CMD_Die     0xDEAD
  170.  
  171. #define Prototype extern
  172. #define Local      static
  173.  
  174. /*
  175.  *  Prototypes:
  176.  */
  177.  
  178. #include "proto.h"
  179.